// 1. 引入Node.js内置http模块（用于创建HTTP服务）
const http = require('http');
// 引入fs模块（用于读取本地图片文件）
const fs = require('fs');
// 引入path模块（用于处理图片文件路径）
const path = require('path');

// 2. 定义图片路径（请将"test.jpg"替换为你的本地图片文件名，放在与脚本同目录）
const imgPath = path.join(__dirname, 'test.jpg');

// 3. 创建HTTP服务
const server = http.createServer((req, res) => {
  // 只处理根路径请求（localhost:8081/）
  if (req.url === '/') {
    try {
      // 4. 读取图片文件并转为Base64编码
      // fs.readFileSync：同步读取文件（适合小图片，避免异步回调复杂度）
      const imgBuffer = fs.readFileSync(imgPath);
      // 将图片Buffer转为Base64字符串
      const imgBase64 = imgBuffer.toString('base64');
      // Data URI格式：data:<MIME类型>;base64,<编码字符串>（JPG图片MIME类型为image/jpeg）
      const dataUri = `data:image/jpeg;base64,${imgBase64}`;

      // 5. 构造响应的HTML内容（包含图片的Data URI）
      const html = `
        <!DOCTYPE html>
        <html lang="zh-CN">
        <head>
          <meta charset="UTF-8">
          <title>Buffer图片示例</title>
        </head>
        <body>
          <h1>基于Buffer的Base64图片展示</h1>
          <!-- 图片src使用Data URI -->
          <img src="${dataUri}" alt="示例图片" style="width: 300px;">
        </body>
        </html>
      `;

      // 6. 响应浏览器：设置状态码200（成功）、Content-Type为text/html
      res.writeHead(200, { 'Content-Type': 'text/html; charset=utf-8' });
      res.end(html); // 发送HTML内容并结束响应

    } catch (error) {
      // 图片读取失败的错误处理
      res.writeHead(500, { 'Content-Type': 'text/plain; charset=utf-8' });
      res.end(`× 图片读取失败：${error.message}`);
    }
  } else {
    // 处理非根路径请求（404未找到）
    res.writeHead(404, { 'Content-Type': 'text/plain; charset=utf-8' });
    res.end('404 页面未找到');
  }
});

// 7. 启动服务，监听8081端口
const port = 8081;
server.listen(port, () => {
  console.log(`√ 服务已启动，访问地址：http://localhost:${port}`);
});